# -- coding: utf-8 --
#上面这个解决的是中文注释报错问题

def  listBasciOperation():
    # 将字符串转换为列表
    ab=list("abc");
    print ab
    # 将列表转换为字符串
    print ''.join(ab)
    # 删除列表中指定位置的元素
    list1=[1,2,3,4]
    del list1[0];
    print list1
    # 分片赋值
    list1[3:]=[1,2,3,4]
    print list1
    # 通过分片赋值来删除某些元素
    list2=[0,1,2,3,4]
    list2[2:]=[]
    print list2
    # 指定位置插入新元素
    list3=[0,1,2,7,8]
    list3[3:3]=[3,4,5,6]
    print list3
    # 查看list元素数量
    print list3.__len__()

def listMethod():
    listExample=[0,1,2,3,4]
    # 追加元素
    list1=listExample[:]
    list1.append(5)
    print list1
    # 追加序列，除了能够追加列表，还能够追加字符串
    list2=listExample[:]
    list22=[5,6,7]
    list222="123"
    list2.extend(list222)
    print list2
    # 找出匹配值的位置
    list3=[123,321,456]
    index=list3.index(123);
    print index
    # 插入
    list4=[1,2,3,4,5]
    list4.insert(3,'four')
    print list4
    # 出list
    list5=listExample[:]
    num=list5.pop()
    print num
    # 构造栈操作
    list6=listExample[:]
    print 'list6:',list6
    list6.pop();
    list6.append(5)
    print 'list6',list6
    # 构造队列操作
    list7=listExample[:]
    print 'list7:',list7
    list7.pop()
    list7.insert(0,5)
    print 'list7',list7
    # 移除第一个匹配的元素,如果没有匹配上，就会抛异常
    list8=['a','b','c','a']
    list8.remove('a')
    print list8
    # 排序，第一种sort不返回值，改变原list；第二种sorted返回排好序的list,不改变原list
    list9=[4,3,8,9,1]
    list9.sort()
    print list9
    list9=[4,3,8,9,1]
    print sorted(list9)   # 默认是False，正序
    print list9
    print "倒序",sorted(list9,reverse=True)
    list10 = ['ac', 'a', '1234', '3', '1231242']
    list10.sort(key=len,reverse=True)
    print list10

def tupleMethod():
    # 第一个是元组，第二个不是元组
    print type((2,))
    print type(2)
    # 第一个是元组，第二个不是元组
    print 3*(34+2,)
    print 3*(34+2)
    # 转换为元组
    print tuple([2,3,4])
    print tuple('abc')
    # 元组的一些操作
    x=1,2,3
    print x
    print x[1]
    print x[1:]

def StringMethod():
    str="name: %s ,age: %.1f";
    varible=("yangzhiyuan",25.6)
    print str % varible
    print "price is %.2f" % 32.22
    print "num is %i" % 2
    print "name is %s" % "apple"
    from math import pi
    print "pi is %10f" % pi # 10f字段宽度为10
    print "pi is %.2f" % pi # .2f字段精度为2
    print "pis is %010f" % pi #用0填充空位
    # find用法
    print "abc,789,abc908".find("abc")
    print "abc,789,abc908".find("abc",1)
    # join连接 相反的方法是split
    print '/'.join(('','usr','bin','env'))
    print '\\'.join(('','usr','bin','env'))
    # lower用法 转大写是title
    name="Apple"
    nameList=["apple","banala","orange"]
    if name.lower() in nameList:print "find it"
    # strip去除两边空格
    print "   hah,hah kkk    ".strip(),"++++"

def directory():
    # 字典两种构造方法
    d=dict(name='faryang',age=42)
    e={'name':'faryang','age':42}
    print type(d)
    print type(e)
    # 字典的基本操作
    print len(d)
    print d.get('name')
    del d['name']
    print d
    if 'name' in d:
        print 'name in d'
    else:
        print 'name non in d'
    d['name']='faryangsh'
    print d
    # 字典初始化x={}
    x={}
    x[3]=3
    print x
    # 复制，复制的副本，而不是对象的引用
    person1=dict(name='faryang',age='22')
    person2=person1.copy()
    person2['name']='far'
    print person1
    print person2

def judge():
    if 2 and [1] and (2) and {'name':'123'}:
        print True
    else:
        print False
    print True==2
    print True==0
    print True==[]
    print True=={}
    print True==()
    x=6
    print '4<x<20 is true?',4<x<30
    print '4<x<20 is true?',4 < x and x < 30
    print [2,3] < [2,5]
    print (3,4,5) < (3.4,6)

def circulation():
    name = ''
    while not name or name.isspace():
        name=raw_input("input your name")
    print 'your name:',name

def forCirculation():
    print range(0,50)
    print xrange(0,50)
    for i in range(0,50):
        print i
    dic={'name':'faryang','age':12}
    for key in dic:
        print 'key is:',key,',name is:',dic[key]
    for key,value in dic.items():
        print 'key is:',key,',name is:',value

def iteration():
    # 并行迭代,如果两个序列长度不一样，zip迭代到最短的那个序列就停止；zip返回的是元组列表
    names = ['tom', 'john', 'amy']
    ages = [23, 56, 26]
    for i in range(len(names)):
        print names[i], ":", ages[i]
    ages = [23, 56, 26, 67, 90]
    print zip(names, ages)
    strs=['abc','bnm','kkl','abc']
    # 按索引迭代，取出序列中索引和值
    for index,value in enumerate(strs):
        if value=='abc':
            strs[index]='ABC'
    print strs

def listComprehension():
    # 获取1~9中能被3整除的数
    print [x for x in range(1,10) if x%3==0 ]
    # 获取1~9中数的平方
    print [x*x for x in range(1,10)]




if __name__ == "__main__":
    # listBasciOperation()
    # listMethod()
    # tupleMethod()
    # StringMethod()
    # directory()
    # judge()
    # circulation()
    # forCirculation()
    # iteration()
    listComprehension()